/*
 * @Author: szx
 * @Date: 2021-11-29 14:52:19
 * @LastEditTime: 2021-11-29 15:25:35
 * @Description:
 * @FilePath: \leetcode\1-99\73\73.js
 */
/**
 * @param {number[][]} mat
 * @return {number[]}
 */
// var findDiagonalOrder = function (mat) {
//     const m = mat.length,
//         n = mat[0].length;
//     const res = [];
//     for (let i = 0; i < m + n - 1; i++) {
//         for (let j = 0; j <= i; j++) {
//             if (i % 2 == 0) {
//                 if (i - j < 0 || i - j >= m || j < 0 || j >= n) continue;
//                 res.push(mat[i - j][j]);
//             } else {
//                 if (i - j < 0 || i - j >= n || j < 0 || j >= m) continue;
//                 res.push(mat[j][i - j]);
//             }
//         }
//     }
//     return res;
// };
var findDiagonalOrder = function (mat) {
    const m = mat.length,
        n = mat[0].length;
    const res = [];
    for (let i = 0; i < m + n - 1; i++) {
        if (i % 2 == 0) {
            for (let j = Math.max(0, i - m + 1); j < Math.min(i + 1, n); j++) {
                res.push(mat[i - j][j]);
            }
        } else {
            for (let j = Math.max(0, i - n + 1); j < Math.min(i + 1, m); j++) {
                res.push(mat[j][i - j]);
            }
        }
    }
    return res;
};

// console.log(
//     findDiagonalOrder([
//         [1, 2, 3],
//         [4, 5, 6],
//         [7, 8, 9],
//         [10, 11, 12]
//     ])
// );
console.log(
    findDiagonalOrder([
        [1, 2, 3, 4],
        [5, 6, 7, 8],
        [9, 10, 11, 12]
    ])
);
